package cn.itsource.smartsystem.controller;


import cn.itsource.smartsystem.domain.Teacher;
import cn.itsource.smartsystem.service.TeacherService;
import cn.itsource.smartsystem.util.AjaxResult;
import cn.itsource.smartsystem.util.ExcelUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import org.springframework.web.multipart.MultipartFile;

import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

/**
 * 针对老师的文档控制器 在每个操作前面写注释然后用uplod to apifox
 */
@RestController
@RequestMapping("/tea")
public class TeacherController {
   @Autowired
    private TeacherService ts;

    /**
     * 查询全部老师的信息
     * @return
     */
   @GetMapping
    public AjaxResult getAll(){
        List<Teacher> list = ts.getAll();
        ts.getAll();
         return AjaxResult
                 .me()
                 .setSuccess(true)
                 .setMessage("查询成功")
                 .setResultObj(list);
    }

    /**
     * 添加或者修改老师信息 根据id来判断 有id值就是修改 没有id值就是添加
     * @param tea
     * @return
     */
    @PutMapping
    public AjaxResult insertTeacher(@RequestBody Teacher tea){
        //当id不为空的时候调用修改方法 当id为空的时候 使用添加
        Integer i;
        if(tea.getId() != null){
            i= ts.updateByPrimaryKeySelective(tea);
        }else {
             i = ts.insertTeacher(tea);
        }
        if(i>0){
            return AjaxResult
                    .me()
                    .setSuccess(true)
                    .setMessage("操作成功")
                    .setResultObj(i);}
        return null;
    }

    /**
     * 根据id删除老师信息 需要使用restful风格
     * @param id
     * @return
     */
    @DeleteMapping("/{id}")
    public AjaxResult delTeacher(@PathVariable("id") Long id){
        Integer i = ts.delTeacher(id);
        if(i>0){
            return AjaxResult
                    .me()
                    .setSuccess(true)
                    .setMessage("删除成功")
                    .setResultObj(i);
        }
       return null;
    }
    /**
     * @Description: 老师信息导出
     * @Author: Neuronet
     * @Date: 2023/9/25 16:49
     * @Return:
     **/
    @GetMapping("/export")
    public void export(HttpServletResponse response) throws IOException {
        List<Teacher> list = ts.getAll();
        ExcelUtil.exportExcel(list, "智慧校园管理系统-老师信息", "老师信息表", Teacher.class, "Teachers", response);
    }
    /**
     * @Description: 老师信息导入模板
     * @Author: Neuronet
     * @Date: 2023/9/25 16:49
     * @param response: 响应对象
     * @Return:
     **/
    @GetMapping("/importTemplate")
    public void importTemplate(HttpServletResponse response) throws IOException {
        List<Teacher> list = new ArrayList<>();
        ExcelUtil.exportExcel(list, "智慧校园管理系统-老师信息", "老师信息表", Teacher.class, "老师信息导入模板", response);
    }
    /**
     * @Description: 老师信息导入
     * @Author: Neuronet
     * @Date: 2023/9/25 17:35
     * @param file: 要导入的文件
     * @Return:
     **/
    @PostMapping("/importExcel")
    public AjaxResult importExcel(@RequestParam("file") MultipartFile file) {
        ts.importExcel(file);
        return AjaxResult.me().setSuccess(true).setMessage("导入成功");
    }
}
